package com.baizhi.cmfz.controller;

import cn.hutool.core.lang.UUID;
import com.baizhi.cmfz.annotation.LogAnnotation;
import com.baizhi.cmfz.entity.Banner;
import com.baizhi.cmfz.service.BannerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.Map;

@RestController
@RequestMapping("/banner")
public class BannerController {
	@Resource
	private BannerService bannerService;


	/**
	 *
	 * @param page 分页显示的当前页数
	 * @param limit 分页显示的每页行数
	 * @return 以json的形式返回所有的数据
	 */
	@LogAnnotation(value = "查询分页数据",type = "select")
	@RequestMapping("/selectBannerPage")
	public Map<String,Object> selectBannerPage(int page,int limit){
		return bannerService.selectBannerPage(page, limit);
	}


	/**
	 *
	 * @param bannerImg 接收的文件对象的名字
	 * @param banner 接收的banner对象
	 * @return 返回操作结果的详细分析
	 */
	@LogAnnotation(value = "上传轮播图信息",type = "insert")
	@RequestMapping("/upload")
	public Map upload(MultipartFile bannerImg, Banner banner, HttpServletRequest request) throws IOException {
		String s = fileUpload(bannerImg, request);

//		将banner的相关数据添加到数据库
		banner.setBannerImgUrl("img/"+s);
		return bannerService.insertBanner(banner);
	}




	@LogAnnotation(value = "查询单个的轮播图信息",type = "select")
	@RequestMapping("/selectById")
	public Banner selectById(int bannerId){
		return bannerService.selectById(bannerId);
	}


	@LogAnnotation(value = "修改轮播图信息",type = "update")
	@RequestMapping("/updateBanner")
	public Map updateBanner(MultipartFile bannerImg, Banner banner, HttpServletRequest request) throws IOException {

//		没有选择文件的时候文件对象存在带时没有文件名
//		选择文件的时候由文件对象也有文件名
//		可以通过这个来判断前台是否上传了文件或修改了文件
		String s=null;
		if(!"".equals(bannerImg.getOriginalFilename()) && bannerImg.getOriginalFilename()!=null){
			 s = fileUpload(bannerImg, request);
			banner.setBannerImgUrl("img/"+s);
		}else{
			s = null;
		}
//		将banner的相关数据添加到数据库

		return bannerService.updateBanner(banner);
	}


	private String  fileUpload(MultipartFile bannerImg, HttpServletRequest request) throws IOException {
//		进行文件上传的操作

		//		System.out.println(bannerImg.getOriginalFilename());
//		System.out.println(banner);
		System.out.println(bannerImg+"-----------------");
		System.out.println(bannerImg.getOriginalFilename()+"--------------");

//		获取文件的文件名
		String filename = bannerImg.getOriginalFilename();
//		创建新的文件名
		String newName = UUID.fastUUID().toString().replace("-", "")+"_"+filename;

//		获取文件在项目中的位置
		String img = request.getServletContext().getRealPath("img");

//		上传文件

		bannerImg.transferTo(new File(img+"/"+newName));
		 return newName;

	}
	@LogAnnotation(value = "删除轮播图信息",type = "delete")
	@RequestMapping("/deleteBanner")
	public Map deleteBanner(int bannerId){
		return bannerService.deleteBanner(bannerId);
	}
}
